﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CongregacaoOs.Data;
using CongregacaoOs.Business;
using System.Text;

namespace CongregacaoOs.WebForm.Cadastros
{
    public partial class ForumOS : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

            if (Session["DadosGerais"] == null) Response.Redirect("~/Cadastros/Account/Login.aspx");

            Page.Form.DefaultButton = btnPostar.UniqueID;

            if (!IsPostBack) AtualizarPosts();
        }

        public void AtualizarPosts()
        {
            ccPostBus bus = new ccPostBus();
            int idOs = Session["idOs"] != null ? Convert.ToInt32(Session["idOs"]) : 0;
            int status = Session["StatusOs"] != null ? Convert.ToInt32(Session["StatusOs"]) : 0;


            if (status == 2)
            {
                radio.Items[1].Enabled = false;
                btnPostar.Enabled = false;
            }
            else
                btnPostar.Enabled = true;

            radio.Items[status].Selected = true;

            DataForum.DataSource = bus.PostSelect(idOs);
            DataForum.DataBind();

        }

        protected void btnPostar_Click(object sender, EventArgs e)
        {
            try
            {
                if (txtText.Text != "" && txtTitulo.Text != "")
                {
                    ccPost ent = new ccPost();
                    ccPostBus bus = new ccPostBus();
                    GetServantFeatures1_Result dadosGerais = new GetServantFeatures1_Result();
                    dadosGerais = (GetServantFeatures1_Result)Session["DadosGerais"];



                    ent.idOs = Convert.ToInt32(Session["IdOs"]);
                    int aIDOS = Convert.ToInt32(ent.idOs);
                    ent.titulo = txtTitulo.Text;
                    ent.dataCriacao = DateTime.Now;
                    ent.texto = txtText.Text;
                    ent.idServo = dadosGerais.idPessoa;
                    bus.PostSaveOrUpdate(ent);


                    #region
                    try
                    {
                        if (aIDOS != 0)
                        {
                            ccOsBus aBus = new ccOsBus();
                            ccOs aOS = new ccOs();
                            aOS.idOs = aIDOS;
                            ccOsFull_Result os = new ccOsFull_Result();


                            List<ccOsFull1_Result3> result = aBus.OsSelectFull(aOS, DateTime.MinValue);



                            using (ccSendEmail busEmail = new ccSendEmail())
                            {
                                using (ClassEmail email = new ClassEmail())
                                {
                                    email.Assunto = @"Portal de O.S - Fórum O.S" + result[0].codigo;

                                    email.Menssagem = "<HEAD>" +
                                                                   "<TITLE>Regional Ribeirão Preto</TITLE>" +
                                                                   "<STYLE TYPE='text/css'>" +
                                                                   "* { margin: 0 auto; width:800px; padding: 0px; }" +
                                                                   "body { font-size: 80%; font-family: 'Lucinda Grande', Verdana, Sans-Serif; margin: 0 auto; }" +
                                                                   "h1 { font-size: 150%; font-weight: bold; color: white; }" +
                                                                   "h2 { font-size: 110%; font-weight: bold; margin: 0 0 10px 20px; }" +
                                                                   "p { font-size: 100%; line-height: 150%; margin: 20px; }" +
                                                                   ".header { padding: 10px; border: 1px solid #000000; background-color: #336699; height: 40px; color: #EEEEEE; width: 100%; }" +
                                                                   ".content { margin-left: 25px; }" +
                                                                   "th { text-align: left; font-weight: bold; padding-right: 10px; }" +
                                                                   ".footer { padding: 10px; border: 1px solid #000000; background-color: #336699; height: 20px; color: #EEEEEE; width: 100%; }" +
                                                                   "</STYLE>" +
                                                                   "</HEAD>" +
                                                                   "<BODY>" +
                                                                   "<TABLE>" +
                                                                   "<TR><TD class='header'>" +
                                                                   "<H1>Fórum Portal de O.S(" + result[0].codigo + ")</H1>" +
                                                                   "</TD></TR>" +
                                                                   "<TR><TD>" +
                                                                   "<P>" +
                                                                              "<hr>"+
                                                                              "<br/><b>Título: </b>" + txtTitulo.Text + "<br />" +
                                                                              "<b>Mensagem: </b> " + txtText.Text + " <br />" +
                                                                              "<hr/>" +
                                                                              "<b>O.S gerado por: </b>" + result[0].UsuarioIn + "<br />" +
                                                                              "<b>Setor Responsável: </b>" + result[0].SetorOut +" "+result[0].AdmOut +  "<br />" +
                                                                              "<b>Prazo: </b>" + String.Format("{0:dd/MM/yyyy}", result[0].dataPrazo)+ "<br />" +
                                                                              "<hr/>" +
                                                                              "<a href='http://www.ccbos.com.br'>Responder o post?</a> " +
                                                                              "<br/><br/><b>Não responda este e-mail</b>" +
                                                                   "</P>" +
                                                                   "</TD></TR>" +
                                                                   "<TR><TD class='footer'>" +
                                                                   "Grupo de Apoio Regional Ribeirão Preto" +
                                                                   "</TD></TR>" +
                                                                   "</TABLE>" +
                                                                   "</BODY>" +
                                                                   "</HTML>";

                                    ccPessoa entPes = new ccPessoa();
                                    ccPessoaBus busPes = new ccPessoaBus();

                                    string ServoQAbriu = busPes.GetEmailPessoaByID(Convert.ToInt32(result[0].IdUsuarioIn));

                                    if (Convert.ToBoolean(result[0].EnviarEmailSetor))
                                    {
                                        string ServoEmail = busPes.GetEmailPessoaByID(Convert.ToInt32(result[0].idServoQExecutara));
                                        email.ListofDestinatario.Add(ServoEmail);
                                        email.ListofDestinatario.Add(ServoQAbriu);
                                        busEmail.SendMail(email);

                                        Functions.LimparCampos(this);

                                        AtualizarPosts();

                                        MessageWindow.MessageType = true;
                                        MessageWindow.Texto = "Post salvo com sucesso!!!";
                                        MessageWindow.ShowWindow();

                                        Functions.LimparCampos(this);

                                        return;
                                    }

                                    List<String> listaDestinatarios = busPes.PessoaEmailBySetor(Convert.ToInt32(result[0].idSetorOut), Convert.ToInt32(result[0].idAdmOut));
                                    listaDestinatarios.Add(ServoQAbriu);
                                    foreach (var item in listaDestinatarios)
                                    {
                                        email.ListofDestinatario.Add(item);

                                    }

                                    busEmail.SendMail(email);
                                }
                            }
                        }


                    }
                    catch (Exception erro)
                    {
                        MessageWindow.MessageType = false;
                        MessageWindow.Texto = "Erro:" + erro.Message;
                        MessageWindow.ShowWindow();
                        return;
                    }
                    #endregion



                    AtualizarPosts();

                    MessageWindow.MessageType = true;
                    MessageWindow.Texto = "Registro salvo com sucesso!!!";
                    MessageWindow.ShowWindow();

                    Functions.LimparCampos(this);
                }
                else
                {
                    MessageWindow.MessageType = false;
                    MessageWindow.Texto = "É necessário colocar o TÍTULO e o TEXTO do post";
                    MessageWindow.ShowWindow();
                }
            }
            catch (Exception error)
            {

                throw new Exception(error.Message);
            }
        }

        protected void btnVoltar_Click(object sender, EventArgs e)
        {
            Session["idOs"] = "0";
            Response.Redirect("~/Cadastros/GerenciamentoOs.aspx");
        }

        protected void radio_SelectedIndexChanged(object sender, EventArgs e)
        {
            using (ccOsBus OsBus = new ccOsBus())
            {

                GetServantFeatures1_Result dadosGerais = new GetServantFeatures1_Result();
                dadosGerais = (GetServantFeatures1_Result)Session["DadosGerais"];

                if (radio.SelectedValue == "2")
                {
                    if (dadosGerais.idPessoa == Convert.ToInt32(Session["IdUsuarioAbriu"]))
                    {
                        if (Session["IdOs"] != null && radio.SelectedValue != "0")
                            OsBus.OsChangeStatus(Convert.ToInt32(Session["IdOs"]), radio.SelectedValue.ToString());
                    }
                    else
                    {
                        //você não pode mudar o status da O.S
                        radio.ClearSelection();
                        MessageWindow.MessageType = false;
                        MessageWindow.Texto = "Somente o usuário que abriu a O.S pode finalizá-la! Faça um Post solicitando o fechamento da mesma.";
                        MessageWindow.ShowWindow();

                    }
                }
                else
                {
                    if (Session["IdOs"] != null && radio.SelectedValue != "0")
                        OsBus.OsChangeStatus(Convert.ToInt32(Session["IdOs"]), radio.SelectedValue.ToString());
                }

            }
        }
    }
}